home *** CD-ROM | disk | FTP | other *** search
/ Power Utilities / Power Utilities.iso / utility / pro203 / wiz.doc < prev    next >
Encoding:
Text File  |  1992-10-14  |  21.8 KB  |  635 lines

  1.  
  2.                 WIZ version 2.0
  3.                by Ray Van Tassle
  4.                1020 Fox Run Lane
  5.              Algonquin, Ill, 60102
  6.                 (708)-658-4941
  7.                    May 20, 1991
  8.  
  9.     Abstract:
  10.     WIZ is a lightning-fast file finder. It will find file(s)
  11.     based on full wildcard specifications (more powerful than
  12.     standard DOS wildcard), and can also filter by file size
  13.     and date.  It can:
  14.        * select only executable files (EXE, COM, BAT).
  15.        * select only archive files (ZIP, ARC, etc.)
  16.        * switch you to the disk\directory of a file that it found.
  17.        * execute a DOS command for each file it finds.
  18.        * look inside archives (ZIP & ARJ)
  19.  
  20.     It will look on multiple disk drives for all matching
  21.     filenames.
  22.  
  23.  
  24.     WIZ program and manual copyright (c) 1991 by Ray Van Tassle.
  25.  
  26.     WIZ is shareware, NOT freeware!!!
  27.  
  28.     You are granted a limited 21 day evaluation license. At the end
  29.     of that period, you should either delete it and stop using it,
  30.     or send in the registration fee of $15.
  31.  
  32.  
  33.  
  34.     MANUAL
  35.     ------
  36.     I was tempted to call this program YAFF (yet another file
  37.     finder), but I settled on WIZ.  This is a funny acronym for
  38.     "where is". But it's also short for WIZARD, because it's so
  39.     fast it seems like magic, and it's filename matching is so
  40.     powerful.
  41.  
  42.     It looks on one or more disks for all filenames (including
  43.     directories) that match the specified filename. By default, it
  44.     starts on drive C, and goes up until it runs out of disks.
  45.  
  46.     It has been tested, and works, with DOS 3.x, including
  47.     DOS 3.31, DOS 4.01, and On-Track partitioning software.
  48.     DOS 3.31 and 4.01 have large (greater than 32MB) partitions
  49.     with more than 65,536 sectors.  On-Track has large partitions
  50.     by virtue of using large sectors (1024, 2048, or 4096 bytes,
  51.     rather than 512 bytes).
  52.     I do not have MS-DOS 5.0, but a beta-tester has reported to 
  53.     me that WIZ works on it.
  54.  
  55.     WIZ normally prints out, for each matching file, the filename,
  56.     date, time, size, and path.  The files are NOT ordered or
  57.     sorted.  All "special" files (hidden, system) are
  58.     flagged with a left-pointing triangle after the filename.
  59.     Optionally, it will list the files in normal fully-pathed form
  60.     (e.g., C:\UTIL\PGMS\ABC.BAT), suitable for processing by a
  61.     program which expects normal filenames.  When the found file
  62.     is inside an archive (-l flag), it will be listed in a form
  63.     suitable for the archiver (e.g.,
  64.     "C:\UTIL\PGMS\FOO.ZIP FILE.EXE")
  65.  
  66.     I deemed that most of the time, people (including me) want it
  67.     to be FAST, rather than in some particular order.
  68.     As it reads the disk, it tries to optimize the head
  69.     motion, so directories are not processed in order of path, but
  70.     in the order that WIZ thinks will be quickest. However, it will
  71.     generally look at the files in a directory before it looks at
  72.     the sub-directories. However (especially if you have
  73.     directories with lots of files and sub-directories), it may
  74.     show some files in a directory, then show sub-directories, then
  75.     show more files in the directory.
  76.  
  77.  
  78.     PERFORMANCE & Comparison with other file-find programs
  79.     ------------------------------------------------------
  80.     Some tests, run on a 10MHZ AT, searching for a non-existent
  81.     file on a large disk partitioned into drives C thru K,
  82.     8002 total files, 184MB in files, in 436 directories.
  83.  
  84.     Search        WIZ         WHEREIS        Norton FF
  85.     string        V2.0        V4.0        V4.5
  86.     --------       ----------      -----------     ------------
  87.     zzz.zzz        0:13        1:32        1:42
  88.     *.zzz        0:15        2:00 (*)        1:51
  89.     *.*zz        0:17        2:00        can't
  90.     *.zz*        0:15        2:01        1:51
  91.  
  92.                 (*) file_specifier was `*.* "?.zzz" '
  93.  
  94.     Looking inside archives (ZIP & LZH):
  95.                      WIZ        SST 5.2a
  96.                     -------            --------
  97.     24 archives, ?? files         0:13         0:18
  98.     418 archives. 4700 files     3:02         4:02
  99.  
  100.  
  101.     (Note: SST v5.2 is the new name for WHEREIS v5.2)
  102.  
  103.     WHEREIS V4.0 (and some others) can look within more types
  104.     of ARC, ZIP, etc. files than WIZ handles.  But WIZ is
  105.     much faster than any other file-finder (including Norton's),
  106.     and it's wildcard ability is much more powerful than most,
  107.     and easier to use than most others that are equally powerful.
  108.  
  109.     WIZ is also much smaller than these other programs.
  110.     Norton FF v4.5 is 9K,  WHEREIS v4.0 is 22K,  WIZv2.0 is 10K
  111.     SSTv5.2a is 44K.
  112.  
  113.  
  114.     ERRORLEVEL exit codes
  115.     ---------------------
  116.     0 = Normal exit.
  117.     1 = Normal exit. -g changes disk/path
  118.     2 = Bad command line.
  119.     255 = Internal error.
  120.  
  121.  
  122.     Error Messages
  123.     --------------
  124.         "Can't tell if FAT-12 or FAT-16. Assuming FAT-16!"
  125.         Just what it says.  I've only seen this on networked
  126.         disk drives.  If you know how to RELIABLY tell what 
  127.         type of FAT a disk has (other than doing thru DOS), 
  128.         please let me know.
  129.  
  130.     "malloc failed for FAT_buf!"
  131.         Can't allocate memory to read a FAT block.  Most 
  132.         likely an internal error.
  133.  
  134.      "malloc failed for dir_sec_buf!"
  135.         Can't allocate memory to read in a directory sector.
  136.         Most likely an internal error.
  137.  
  138.     "Sorry, out of memory!!!"
  139.         You lose.
  140.  
  141.     "Can't open file:"
  142.         Failure to open an archive file.  Most likely a disk
  143.         error. Run CHKDSK.
  144.  
  145.     "Internal error in ZIP/LZH/ARJ file"
  146.         The data read from in archive file isn't as expected.
  147.         Most likely the archive has a new format, and WIZ 
  148.         hasn't yet been updated.
  149.  
  150.  
  151.     BUGS
  152.     ----
  153.     No known bugs.  However, WIZ mostly does not use DOS to 
  154.     process a disk, so errors on my part, or a change in the disk 
  155.     structure might break it.  The most major bug reported was on 
  156.     huge disk partitions under MS-DOS 4.01.  This bug caused WIZ 
  157.     to read a random block from the disk, and treat it as a 
  158.     directory.  It made a valiant attempt to march down all the 
  159.     phoney sub-directories, and would actually run for quite a 
  160.     while before printing one of the "malloc failure" messages.
  161.  
  162.     If you are having problems, try 1) use the "-v" switch, to 
  163.     isolate the error to a specific disk,  2) use "-vv", to see 
  164.     as it hits each sub-directory,  3) use "*.*" to see all the 
  165.     files, and watch until it walks off the edge of the world.
  166.     Then call or write me.
  167.  
  168.  
  169.     Command Line format and Switches
  170.     --------------------------------
  171.  
  172.     WIZ [disks:]file_pattern [-sN] [-dN] [-nN] [-p] [-gN] [-x]
  173.         [-a] [-v] [-l] [-cS] [-?] [>output-file-name]
  174.  
  175.     As usual, the stuff inside the square brackets "[]" are
  176.     optional and may be present or omitted. You do NOT include
  177.     the brackets in your command line.
  178.     The various fields and options may appear in any order, in
  179.     either upper or lower case.
  180.     The switch character can be either "-" or "/".
  181.  
  182.     You can have more than one set of "[disk:]pattern", and it
  183.     does the correct thing. That is, it scans each set in turn.
  184.     So you can say: "WIZ c:pyro* cd:*.cfg *.ovr".
  185.  
  186.     Except for size (-s) and date (-d), the options may be run
  187.     together.
  188.     For example: "WIZ -g20xp"   is the same as  "WIZ -g20 -x -p".
  189.  
  190.  
  191.  
  192.     If you just invoke WIZ without any parameters, it gives you a
  193.     brief help line.  For more info, include '-?'.  For even more,
  194.     include '-??'.
  195.  
  196.     Disk(s): & filename_pattern
  197.     ---------------------------
  198.     1) [disks:]pattern
  199.     2) pattern
  200.     3) :pattern
  201.  
  202.     With format 1, you specify the disk(s) you want it to look at,
  203.     followed by ":".  It will look at those drives, in the order
  204.     you listed them.  If you list the same one twice, it will look
  205.     at it twice.
  206.  
  207.     With format 2, it will look at all drives beginning with C. It
  208.     will stop when it hits a drive that it cannot read.
  209.  
  210.     With format 3, it will look at all drives beginning with A. It
  211.     will stop when it hits a drive that it cannot read, except A &
  212.     B.  If the floppy drive has a disk in, it will look at it,
  213.     otherwise it will ignore the floppy drive.
  214.  
  215.     You do not (and cannot) specify path or directory names,
  216.     because WIZ searches an entire disk.
  217.  
  218.  
  219.     PATTERN:
  220.     --------
  221.     I call it "pattern" rather than "filename", because WIZ
  222.     does a full pattern-match against the actual filenames it
  223.     reads from the disk.  The pattern has three special characters
  224.     (called meta-characters), plus all the other characters
  225.     possible in a filename.
  226.  
  227.     1)  "*" (star)
  228.     2)  "?" (question mark)
  229.     3)  "." (dot),
  230.  
  231.     1) "*"    This is the "rubber" wildcard meta-character.  The
  232.         star will match as many characters as possible, from
  233.         none to the entire filename.  It is "rubber", because
  234.         it will shrink & stretch to match as many characters
  235.         as required.
  236.  
  237.     2) "?"    This is the "single" wildcard meta-character.  It will
  238.         match exactly ONE character in the filename.
  239.  
  240.     3) "."  This is the "separator" meta-character (it is NOT a
  241.         wildcard character).
  242.         If you specify a dot in the pattern, the disk filename
  243.         (and the pattern) is treated as having two parts,
  244.         one before the dot, and one after the dot.
  245.         Each part undergoes it's own pattern matching.
  246.  
  247.     If you don't have any meta-characters in the filename pattern,
  248.     WIZ appends a "*" on the end of what you specified.
  249.  
  250.     Proper pattern matching (like WIZ does) is almost a D.W.I.M.
  251.     (do what I mean) operation.  DOS's wildcards are so primitive
  252.     that it is professionally embarrassing.  Not only that, but the
  253.     pattern-matching subroutine in WIZ is only a couple of dozen
  254.     lines of code. And it's surprisingly (at least to me) fast.
  255.  
  256.     To give some examples:
  257.     *A*     means:
  258.         any file which has an A anywhere in it, on either side
  259.         of the dot.
  260.  
  261.     Z*    Any file that starts with a Z
  262.         (ZZBC.BAT    Z.Z)
  263.  
  264.     ?.    Any filename that has exactly one character in it, and
  265.         has no extent.  (A.   B.   but not    AB.   or A.BAT)
  266.  
  267.     ?*      Any filename that isn't totally blank.
  268.  
  269.     A*T    any file that starts with A and ends with T in the
  270.         extent. (ABCDE.BAT     A.T    AB.ERT but not ABCERT.)
  271.  
  272.     A*T.    any file that starts with A and ends with T, and
  273.         has no extent. (ABCERT.      but not ABCERT.RST)
  274.  
  275.     A*T.*    any file that starts with A and ends with T, whether or
  276.         not it has an extent.
  277.         (ABCERT.    ABCERT.RST    ABCDET.COM)
  278.  
  279.     A*B*Z.* any file that starts with A then somewhere to the right
  280.         has a B, then ends with Z, and has any extent.
  281.         (ABZ.BAT    AMNOBPQRZ.   ABYXZ.COM)
  282.  
  283.     *.C    any file with an extent of C
  284.  
  285.     W*.C    any file that starts with W and has a C extent. (W.C
  286.         WIZ.C  WIZ14.C)
  287.  
  288.     W*4.C    any file that starts with W, ends with 4, and has an
  289.         extent of C.
  290.  
  291.     ???.C    any file that has exactly 3 characters in the name, and
  292.         an extent of C.
  293.  
  294.     Directories also participate in the filename matching.  A lot
  295.     of other whereis programs don't tell you about directory names
  296.     that match.  I find this annoying, because many times I can
  297.     remember the directory name (or at least part of it), but not
  298.     the file names.   This is especially true for things that I
  299.     have downloaded.  Since directories normally don't have an
  300.     extent (although they can), for matching purposes a directory
  301.     that does not have an extent is treated as if it has a blank
  302.     extent, so it has a dot.  But when it is printed out, this
  303.     implied dot isn't printed.
  304.  
  305.     POPDROP.  will match the directory name "POPDROP"
  306.           and the filename "POPDROP.", but not "POPDROP.COM"
  307.  
  308.     POPDROP.* will match all of the above
  309.  
  310.     POPDROP   will match all of the above, but also POPDROP2.COM
  311.           etc.
  312.  
  313.  
  314.  
  315.  
  316.     -s Size qualifier
  317.     -----------------
  318.     Files may be further filtered by their size. Either or both
  319.     minimum and maximum size may be specified. A file will match
  320.     only if it's size falls between the two limits, inclusive.
  321.     Note that a directory, while it is really a file, is not
  322.     considered to have a size, so directories will NEVER show up
  323.     if you give a size qualifier. This gives a way to never show
  324.     directories: just add "-s0".  All other files have a size
  325.     that is greater than or equal to zero.
  326.  
  327.     -s[low_limit][:hi_limit]
  328.  
  329.     -s100        Files that are 100 or more bytes large.
  330.  
  331.     -s:10000    Files that are 10000 or less bytes large.
  332.  
  333.     -s500:600    Files whose size is greater than or equal to
  334.             500 bytes, and less than or equal to 600 bytes.
  335.  
  336.     -s1000:1000    Files that are exactly 1000 bytes large.
  337.  
  338.  
  339.  
  340.     -d Date qualifier
  341.     -----------------
  342.     Files may also be filtered by date.  Either or both
  343.     lowest & highest date may be specified. A file will match
  344.     only if it's date falls between the two limits, inclusive.
  345.  
  346.     -d[low_date][:high_date]
  347.  
  348.     The format for date is MM/DD/YY or MM-DD-YY.  The year
  349.     can be given as either "91" or "1991".
  350.  
  351.     -d1/1/90    Files dated on or after Jan 1, 1990.
  352.  
  353.     -d:12-31-87    Files dated on or before Dec 31, 1987.
  354.  
  355.     -d1-1-90:12-31-1990  Files dated anytime in 1990.
  356.  
  357.     -d12/12/90:11/11/90  No files---it's impossible for a file to
  358.             be dated after Dec 12, 1990 and before
  359.             Nov 11, 1990 (inclusive)
  360.  
  361.  
  362.  
  363.     -nOPT  debugging options
  364.     ------------------------
  365.     The numeric value "OPT" is a bit-flag that is used to control
  366.     internal operation for debugging. I only document it because
  367.     I HATE programs that have undocumented switches.
  368.  
  369.  
  370.  
  371.     -p    List in canonical pathname format
  372.     ---------------------------------------
  373.     The matching files are listed in normal DOS format:
  374.         disk:\path\name.ext
  375.     If the "-l" flag ("look inside archives") is given,
  376.     the format is:
  377.         disk\path\archive-name.zip filename.ext
  378.  
  379.     Date, time, size are not given.  This type of list
  380.     is presumably going to be fed into a program as a
  381.     list of files, so directories will not be listed.
  382.  
  383.  
  384.  
  385.     -g     Go to directory
  386.     ----------------------
  387.     This will change your path to the disk & directory of the
  388.     Nth file in the list of files that matched.  If you omit
  389.     N, it will change to the path if exactly one matching file
  390.     is found.
  391.  
  392.     If that file is a directory, WIZ will set the path to that
  393.     directory.  On the other hand, if it is a file, WIZ will set
  394.     the path to be the directory that the file is in.
  395.  
  396.     How do you know what N to give?  Well, first try "-g" all by
  397.     itself. If it finds only one, it will go there.  If it finds
  398.     several, do it again, only this time, give it the number.
  399.     (If you have a decent disk-cache program, this 2nd search will
  400.     be VERY fast, as the directory blocks are probably in the
  401.     cache.)
  402.  
  403.     Obviously, if N is larger than the number of files that match,
  404.     nothing will happen.
  405.  
  406.     -g5    Will change to the path of the 5th listed file.
  407.     -g1    Will change to the path of the first listed file.
  408.     -g    Will change to the path of the one and only listed
  409.         file.  If several are listed, the path will not be
  410.         changed.
  411.  
  412.  
  413.     -x    Executable files
  414.     ----------------------
  415.     This switch will set a pre-filter, and select only executable
  416.     files (.BAT, .COM, .EXE) that pass the other filters (size,
  417.     date, pattern).  For this to work properly, the pattern should
  418.     either not have a dot, or terminate with ".*" (because this is
  419.     just an additional filter, albeit one with three holes).
  420.  
  421.     I added this because a lot of times I find myself looking for
  422.     a handy but seldom-used program, and I can never remember if
  423.     it's a COM or an EXE file.  And if I put "*FOO*.*", WIZ lists
  424.     everything, including the directory, DOC, README, etc.
  425.  
  426.  
  427.     -a    Archive files
  428.     -------------------
  429.     This works just like "-x", except it's for archive files.
  430.     These are ZIP, ARC, LZH, ZOO, ARJ, PAK.
  431.  
  432.  
  433.     -v    Verbose
  434.     -------------
  435.     If you have this flag once, WIZ will print the disk name when
  436.     it starts as it starts on a disk.  If you have it twice
  437.     (-vv), it will also print the name of each directory as it
  438.     starts processing it.  This is mostly useful for trouble
  439.     shooting, or to see a progress indication.
  440.  
  441.  
  442.     -l    Look inside archives
  443.     --------------------------
  444.     This switch will make it look inside archives (ZIP, LZH, and
  445.     ARJ archives only), for a matching filespec.  Note that all
  446.     the filters apply to the file INSIDE the archive, and NOT to
  447.     the archive itself.  The disk list will, however, still
  448.     specify the disks to look at.  It is not possible to scan for
  449.     files and inside archives at the same time--this would have
  450.     added too much complexity to the code.
  451.  
  452.     Both PKZIP and ARJ come with information on the internal
  453.     format of their archive files, including the header.  Neither
  454.     LHARC nor LHA do, but it was pretty easy for me to figure
  455.     out.  I do ZIP's because that is currently the most common
  456.     type of archive.  LHA compresses smaller, but lacks a few
  457.     features, and is slower in compressing.  ARJ is the BEST.  It
  458.     packs 5% - 10% tighter than ZIP (but is slower in
  459.     compressing), and includes all the nice features of ZIP,
  460.     including encryption, comments, etc, and also can
  461.     automagically create a segmented archive, so you can put a
  462.     huge archive onto several floppy disks, without having to use
  463.     SLICE/SPLICE.  It also comes with a handy utility to convert
  464.     any other archive type to ARJ's.  I didn't do any other
  465.     archivers, because 1) I don't have information on the
  466.     internal format, 2) these three are the most common, and
  467.     best, and 3) I don't want WIZ to get any larger than
  468.     necessary.
  469.  
  470.  
  471.     -c    Execute a command
  472.     -------------------------
  473.     This lets you execute a DOS command for each matching file.
  474.     The format is '-cCOMMAND' or '-c COMMAND'. However, if the
  475.     COMMAND has any special characters (space, |, <, >, etc.) you
  476.     must enclose it in quotes: '-c"COMMAND"'.
  477.  
  478.     Each occurance (if any) of the character "*" in the command is
  479.     replaced by the complete file-name (including disk and path).
  480.  
  481.     WIZ will spawn a new copy of the command-line shell
  482.     (COMMAND.COM, 4DOS, etc.), and pass it the built command. The
  483.     one exception is that the command "del*" or "del *" (to
  484.     delete the file) is handled internally by WIZ itself.  (Note
  485.     that you can use the form: '-cdel*', and you do not need a
  486.     space before the '*', nor do you need to enclose the command
  487.     in quotes.)  For this command, WIZ will prompt you to confirm
  488.     each file to be deleted.  (I did this because deleting files
  489.     is a handy thing to do, and it's quicker to do it inside of
  490.     WIZ that to spawn a shell to do it.  But I'm no fool!! You
  491.     have to confirm that you want delete, for each file. No
  492.     way am I going to let it merrily delete every file on my
  493.     disk(s) just because I make one little mistake on the command
  494.     line!!)   If you prefer to have the shell handle the file
  495.     deletions, use "erase *" or "delete *".
  496.  
  497.     You can't do "-cdel*" along with "-l".  If you have given the
  498.     -l switch, the '*" is replaced with the complete filename of
  499.     the archive (.ZIP, .LZH, .ARJ), a space, and then the
  500.     filename.
  501.  
  502.     Examples:
  503.         -c"type *"    -- type each matching file
  504.         -c"more <*"    -- ditto, with a pause for each page
  505.         -c"copy * a:\"    -- copy each matching file to A:
  506.         -c"set"        -- display the environment at each
  507.                    matching file.
  508.         -c"pkunzip *"    -- extract matching files from a ZIP
  509.                    archive.
  510.  
  511.  
  512.  
  513.  
  514.  
  515.     Coming Attractions
  516.     ------------------
  517.     An interactive screen interface.
  518.     It will gather the file names instead of just printing them
  519.     out.  Then you will be able to sort by name, extent, disk,
  520.     date, size.  You'll also be able to tag files and delete, copy,
  521.     move them, and find duplicates.
  522.     Plus other things I think of, or get suggested.
  523.  
  524.     This is shareware, so I'm more interested and receptive in
  525.     hearing comments and suggestions than a commercial software
  526.     publisher would be.  Just send them in, or give me a call.
  527.     I can't promise to fix bugs, or add specific features, but
  528.     I'll listen to everything. Even if you're cheap and haven't
  529.     registered.
  530.  
  531.  
  532.  
  533.     Update History
  534.     --------------
  535.  
  536.     1.6
  537.     Initial public release
  538.  
  539.     1.7
  540.     Bug fixes
  541.  
  542.     1.8
  543.     Changed "-g" operation. Quit as soon as we hit the correct
  544.     one.  Sound an alarm bell when we set disk/directory.
  545.  
  546.     1.81 (not released)
  547.     * Fix for huge disks. I tested with 100+ MB disk, but failed
  548.     to test with a nearly full disk. Result=BUG!! -- (overflow in
  549.     intermediate calculation, converting cluster to sector
  550.     number.)  Thanks, Eddie, for running DOS 4.01 with one huge
  551.     >32MB partition--which all the gurus recommend against!
  552.  
  553.     1.9
  554.     * Fixed bug in handling full root directory.
  555.     * Changes in walking the directory tree.  Made it
  556.       non-recursive; changed the way I collect pathname to print.
  557.     * Added -c switch.
  558.     * Fix bug in handling a sub-directory that is exactly and
  559.       evenly full, with no next cluster.
  560.  
  561.     1.91
  562.     * Slightly faster
  563.     * Added -a switch
  564.  
  565.     2.00
  566.     * Slightly smaller and faster.
  567.     * Creeping featurism!!
  568.     * Added -l switch, to look inside archives
  569.     * Decided that the ability to look inside achives should
  570.       signify a new major version, so it's now 2.0
  571.  
  572.     ********
  573.     Programming notes (if anyone is interested):
  574.  
  575.     The way I scan thru the disk, it pretty much sweeps thru
  576.     the disk from front to back, without (much) hopping back &
  577.     forth.  So it scans the 1st cluster of ALL the directories
  578.     and sub-directories on the disk, then makes a pass thru the
  579.     FAT (from start to end within the FAT), and so on.
  580.  
  581.     This optimization of head movement really helps to speed it
  582.     up, especially if you don't have a fast disk.  The
  583.     unfortunate side effect is that it looks at a directory one
  584.     chunk at a time, interspersed with chunks of other
  585.     directories.  But it sure is fast!!
  586.  
  587.  
  588.  
  589.                            --------------------------
  590.                              INVOICE / REGISTRATION
  591.                            --------------------------
  592.  
  593.  
  594.  
  595.           Sold to: ___________________________________________________
  596.  
  597.                    ___________________________________________________
  598.  
  599.                    ___________________________________________________
  600.  
  601.  
  602.              Date: ______________________________
  603.  
  604.  
  605.           ============================================================
  606.  
  607.  
  608.  
  609.  
  610.           _____ copies of WIZ version 2.0 at $15 each $____________
  611.  
  612.  
  613.                                 TOTAL ENCLOSED.......  $____________
  614.  
  615.       Where did you get your copy of WIZ?
  616.       Shareware distributor name:___________________
  617.       BBS name: ____________________
  618.       BBS phone #:  ____________________
  619.  
  620.  
  621.                       Send this invoice and your check to:
  622.  
  623.                 Ray Van Tassle
  624.                 1020 Fox Run Lane
  625.                 Algonquin, Il. 60102
  626.                 (708)-658-4941
  627.  
  628.  
  629.  
  630.  
  631.           =============================================================
  632.  
  633.           Thank you for your support ............... Ray Van Tassle
  634.  
  635.